package br.com.sgpv2.service.cargo;

import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import br.com.sgpv2.controler.NegocioExeception;
import br.com.sgpv2.entity.cargos.CargoFuncao;
import br.com.sgpv2.entity.pessoa.Contrato;
import br.com.sgpv2.hibernate.cargo.CargoRepository;


/**
 * Classe de serviço de Departamento.
 */
@Service(value = "cargoService")
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class CargoServiceImpl implements CargoService {

	private CargoRepository cargoRepository;
	
	@Override
	public void salvar(CargoFuncao cargoFuncao) {
		cargoRepository.salvar(cargoFuncao);

	}

	@Override
	public void alterar(CargoFuncao cargoFuncao) {
		cargoRepository.alterar(cargoFuncao);

	}

	@Override
	public List<CargoFuncao> listar() {
		return cargoRepository.listarOrder("descricao");
	}

	@Override
	public void excluir(CargoFuncao cargoFuncao) {
		cargoRepository.excluir(cargoFuncao);

	}

	@Override
	public CargoFuncao buscar(Integer pk) throws NegocioExeception {
		return cargoRepository.buscar(pk);
	}

	@Override
	public boolean validarExclusao(String idCargo) {
		List<Contrato> contratos = cargoRepository.listarContratosPorDepartamento(Integer.parseInt(idCargo));
		if(contratos.size() > 0){
			return false;
		}else{
			return true;
		}
	}

	public CargoRepository getCargoRepository() {
		return cargoRepository;
	}

	@Autowired
	public void setCargoRepository(CargoRepository cargoRepository) {
		this.cargoRepository = cargoRepository;
	}

	@Override
	public CargoFuncao buscarCargoPorCodigo(String cargoFuncao) {
		return cargoRepository.buscarCargoPorCodigo(cargoFuncao);
	}
	
	public List<CargoFuncao> consultarPorDescricao(String descricao) {
		if (StringUtils.isNotBlank(descricao)) {
			return cargoRepository.consultarPorDescricao(descricao);
		} else {
			return listar();
		}
	}

}
